home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-19
/
l2c-19.exe
/
L2C.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-06-25
|
12KB
|
372 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <malloc.h>
#include <stdarg.h>
#include "adslib.h"
#include "adsdlg.h"
//
//
#undef X
#undef Y
#undef Z
#undef T
#define SymExp MemoryCell *
#define Dummy MemoryCell *
#define StrExp char *
//
typedef enum {
False,
True
} Boolean;
typedef enum {
cCons,
cNumber,
cReal,
cString,
cSymbol,
cFunction,
cOpen,
cClose,
cDot,
cFile,
cSubr,
cExSubr,
cPickSet,
cEName,
cUnknown,
cReserved
} CellTypes;
typedef struct MemoryCell {
struct {
unsigned ID : 4;
unsigned Mark : 1;
unsigned Point2 : 9;
unsigned Usable : 1;
} Flag;
struct SymExp Next;
struct SymExp Prev;
CellTypes CellType;
union {
struct {
StrExp Name;
} Symbol;
long IntValue;
ads_real RealValue;
StrExp StrValue;
struct {
struct SymExp Car;
struct SymExp Cdr;
} Cons;
struct {
int ArgC;
struct SymExp (*Func)();
} Func;
FILE *File;
ads_name EName;
ads_name PickSet;
} Cell;
} MemoryCell;
//
//
typedef struct SelectionSetList {
ads_name SelectionSet;
int Flag;
struct SelectionSetList *Next;
} SelectionSetList;
//
typedef struct FileList {
FILE *File;
int Flag;
struct FileList *Next;
} FileList;
//
//
//░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
//
#define MaxSymbol 2003
#define HStep 13
typedef struct HashList {
SymExp Value;
Boolean Repr;
struct HashList *Next;
} HashList_;
typedef struct {
StrExp Name;
struct HashList *Top;
Boolean Local;
} HashTable;
#define ClearError ERROR = False
#define ErrorTest if (ERROR) return (NULL)
Boolean GetBoolean (SymExp);
Boolean IsFunction (SymExp);
Boolean IsPoint (SymExp);
FILE *GetFile (SymExp);
StrExp GetName (SymExp);
StrExp GetString (SymExp);
SymExp (*GetFunction ())();
SymExp ADS_Acad_colordlg (SymExp, SymExp, ...);
SymExp ADS_Acad_helpdlg (SymExp, SymExp, ...);
SymExp ADS_Acad_strsort (SymExp, SymExp);
SymExp ADS_Action_tile (SymExp, SymExp,...);
SymExp ADS_Add_list (SymExp,...);
SymExp ADS_Ads (SymExp);
SymExp ADS_Alert (SymExp, SymExp);
SymExp ADS_Angle (SymExp, SymExp, SymExp);
SymExp ADS_Angtof (SymExp, SymExp,...);
SymExp ADS_Angtos (SymExp, SymExp,...);
SymExp ADS_Client_data_tile (SymExp, SymExp, ...);
SymExp ADS_Command (SymExp,...);
SymExp ADS_Cvunit (SymExp, SymExp, SymExp, SymExp);
SymExp ADS_Dimx_tile (SymExp, ...);
SymExp ADS_Dimy_tile (SymExp, ...);
SymExp ADS_Distance (SymExp, SymExp, SymExp);
SymExp ADS_Distof (SymExp,...);
SymExp ADS_Done_dialog (SymExp,...);
SymExp ADS_End_image (SymExp);
SymExp ADS_End_list (SymExp);
SymExp ADS_Entdel (SymExp,...);
SymExp ADS_Entget (SymExp, SymExp, ...);
SymExp ADS_Entlast (SymExp);
SymExp ADS_Entmake (SymExp,...);
SymExp ADS_Entmod (SymExp,...);
SymExp ADS_Entnext (SymExp,...);
SymExp ADS_Entsel (SymExp,...);
SymExp ADS_Entupd (SymExp,...);
SymExp ADS_Fill_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Findfile (SymExp, SymExp);
SymExp ADS_Get_attr (SymExp, SymExp,...);
SymExp ADS_Get_tile (SymExp,...);
SymExp ADS_Getangle (SymExp,...);
SymExp ADS_Getcorner (SymExp, SymExp,...);
SymExp ADS_Getdist (SymExp,...);
SymExp ADS_Getfiled (SymExp, SymExp, SymExp, SymExp, SymExp);
SymExp ADS_Getint (SymExp,...);
SymExp ADS_Getkword (SymExp,...);
SymExp ADS_Getorient (SymExp,...);
SymExp ADS_Getpoint (SymExp,...);
SymExp ADS_Getreal (SymExp,...);
SymExp ADS_Getstring (SymExp,...);
SymExp ADS_Getvar (SymExp,...);
SymExp ADS_Graphscr (SymExp);
SymExp ADS_Grclear (SymExp);
SymExp ADS_Grdraw (SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Grread (SymExp, ...);
SymExp ADS_Grtext (SymExp, ...);
SymExp ADS_Grvecs (SymExp, SymExp, ...);
SymExp ADS_Handent (SymExp, SymExp);
SymExp ADS_Initget (SymExp,...);
SymExp ADS_Inters (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Load_dialog (SymExp,...);
SymExp ADS_Menucmd (SymExp, SymExp);
SymExp ADS_Mode_tile (SymExp, SymExp,...);
SymExp ADS_Nentsel (SymExp, ...);
SymExp ADS_Nentselp (SymExp, ...);
SymExp ADS_New_dialog (SymExp, SymExp, SymExp,...);
SymExp ADS_Osnap (SymExp, SymExp, SymExp);
SymExp ADS_Polar (SymExp, SymExp, SymExp, SymExp);
SymExp ADS_Prompt (SymExp, SymExp);
SymExp ADS_Redraw (SymExp, ...);
SymExp ADS_Regapp (SymExp, SymExp);
SymExp ADS_Rtos (SymExp, SymExp,...);
SymExp ADS_Set_tile (SymExp, SymExp,...);
SymExp ADS_Setvar (SymExp, SymExp, SymExp);
SymExp ADS_Slide_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Ssadd (SymExp,...);
SymExp ADS_Ssdel (SymExp, SymExp, SymExp);
SymExp ADS_Ssget (SymExp,...);
SymExp ADS_Sslength (SymExp, SymExp);
SymExp ADS_Ssmemb (SymExp, SymExp, SymExp);
SymExp ADS_Ssname (SymExp, SymExp, SymExp);
SymExp ADS_Start_dialog (SymExp);
SymExp ADS_Start_image (SymExp, ...);
SymExp ADS_Start_list (SymExp, SymExp,...);
SymExp ADS_Tablet (SymExp, SymExp, ...);
SymExp ADS_Tblnext (SymExp, SymExp, ...);
SymExp ADS_Tblsearch (SymExp, SymExp, SymExp, ...);
SymExp ADS_Term_dialog (SymExp);
SymExp ADS_Textbox (SymExp, SymExp);
SymExp ADS_Textscr (SymExp);
SymExp ADS_Trans (SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Unload_dialog (SymExp,...);
SymExp ADS_Vector_image (SymExp, SymExp, SymExp, SymExp, SymExp, ...);
SymExp ADS_Vports (SymExp);
SymExp ADS_Wcmatch (SymExp, SymExp,...);
SymExp ADS_Xdroom (SymExp, ...);
SymExp ADS_Xdsize (SymExp, ...);
SymExp ADS_Xload (SymExp, SymExp,...);
SymExp ADS_Xunload (SymExp, SymExp,...);
SymExp Copy (SymExp);
SymExp GetLocal (HashTable [], int);
SymExp GetSymbol (HashTable [], StrExp);
SymExp LSP_Abs (SymExp, Dummy);
SymExp LSP_Alloc (SymExp, Dummy);
SymExp LSP_And (SymExp, ...);
SymExp LSP_Append (SymExp, ...);
SymExp LSP_Ascii (SymExp, Dummy);
SymExp LSP_Assoc (SymExp, SymExp, Dummy);
SymExp LSP_Atan (SymExp,...);
SymExp LSP_Atof (SymExp, Dummy);
SymExp LSP_Atoi (SymExp, Dummy);
SymExp LSP_Atom (SymExp, Dummy);
SymExp LSP_AtomsFamily (SymExp, SymExp, ...);
SymExp LSP_BitNot (SymExp, Dummy);
SymExp LSP_Boole (SymExp, SymExp, SymExp,...);
SymExp LSP_Boundp (SymExp, Dummy);
SymExp LSP_C_r (SymExp, StrExp, Dummy);
SymExp LSP_Car (SymExp, Dummy);
SymExp LSP_Cdr (SymExp, Dummy);
SymExp LSP_Chr (SymExp, Dummy);
SymExp LSP_Close (SymExp, SymExp);
SymExp LSP_Cons (SymExp, SymExp, Dummy);
SymExp LSP_Cos (SymExp, Dummy);
SymExp LSP_Divide (SymExp,...);
SymExp LSP_Eq (SymExp, SymExp, SymExp);
SymExp LSP_Equal (SymExp, SymExp, SymExp,...);
SymExp LSP_Eval (SymExp, SymExp);
SymExp LSP_Exit (Dummy);
SymExp LSP_Exp (SymExp, SymExp);
SymExp LSP_Expand (SymExp, Dummy);
SymExp LSP_Expt (SymExp, SymExp, SymExp);
SymExp LSP_Fix (SymExp, Dummy);
SymExp LSP_Float (SymExp, Dummy);
SymExp LSP_Gc (Dummy);
SymExp LSP_Gcd (SymExp, SymExp, Dummy);
SymExp LSP_Getenv (SymExp,...);
SymExp LSP_Invoke (StrExp, SymExp, ...);
SymExp LSP_Itoa (SymExp, Dummy);
SymExp LSP_Last (SymExp, Dummy);
SymExp LSP_Length (SymExp, Dummy);
SymExp LSP_LessEqual (SymExp, SymExp, ...);
SymExp LSP_LessThan (SymExp, SymExp, ...);
SymExp LSP_List (SymExp,...);
SymExp LSP_Listp (SymExp, Dummy);
SymExp LSP_Load (SymExp, SymExp, ...);
SymExp LSP_Log (SymExp, SymExp);
SymExp LSP_Logand (SymExp, SymExp, ...);
SymExp LSP_Logior (SymExp, SymExp, ...);
SymExp LSP_Lsh (SymExp, SymExp, Dummy);
SymExp LSP_Max (SymExp,...);
SymExp LSP_Mem (SymExp,...);
SymExp LSP_Member (SymExp, SymExp, Dummy);
SymExp LSP_Min (SymExp,...);
SymExp LSP_Minus (SymExp,...);
SymExp LSP_Minusp (SymExp, Dummy);
SymExp LSP_MoreEqual (SymExp, SymExp, ...);
SymExp LSP_MoreThan (SymExp, SymExp, ...);
SymExp LSP_Not (SymExp, Dummy);
SymExp LSP_Nth (SymExp, SymExp, Dummy);
SymExp LSP_Null (SymExp, Dummy);
SymExp LSP_NumEq (SymExp, SymExp, ...);
SymExp LSP_NumNotEq (SymExp, SymExp, ...);
SymExp LSP_Numberp (SymExp, Dummy);
SymExp LSP_OneMinus (SymExp, Dummy);
SymExp LSP_OnePlus (SymExp, Dummy);
SymExp LSP_Open (SymExp, SymExp, SymExp);
SymExp LSP_Or (SymExp, ...);
SymExp LSP_Plus (SymExp,...);
SymExp LSP_Prin1 (SymExp, ...);
SymExp LSP_Princ (SymExp, ...);
SymExp LSP_Print (SymExp, ...);
SymExp LSP_Quit (Dummy);
SymExp LSP_Read (SymExp, Dummy);
SymExp LSP_ReadChar (SymExp, ...);
SymExp LSP_ReadLine (SymExp, ...);
SymExp LSP_Rem (SymExp, SymExp, ...);
SymExp LSP_Reverse (SymExp, SymExp);
SymExp LSP_Sin (SymExp, Dummy);
SymExp LSP_Sqrt (SymExp, SymExp);
SymExp LSP_StrCase (SymExp ,...);
SymExp LSP_StrCat (SymExp, ...);
SymExp LSP_StrLen (SymExp, ...);
SymExp LSP_SubStr (SymExp, SymExp, ...);
SymExp LSP_Subst (SymExp, SymExp, SymExp, Dummy);
SymExp LSP_Terpri (Dummy);
SymExp LSP_Times (SymExp,...);
SymExp LSP_Trace (SymExp, ...);
SymExp LSP_Type (SymExp, Dummy);
SymExp LSP_Untrace (SymExp, ...);
SymExp LSP_Ver (Dummy);
SymExp LSP_Vmon (Dummy);
SymExp LSP_WriteChar (SymExp, ...);
SymExp LSP_WriteLine (SymExp, ...);
SymExp LSP_Zerop (SymExp, Dummy);
SymExp MakeEName (ads_name);
SymExp MakeFile (FILE *);
SymExp MakeFunction (SymExp (*F)(), int);
SymExp MakeMatrix (ads_matrix);
SymExp MakeMem (CellTypes, int);
SymExp MakeNumber (long);
SymExp MakePickSet (ads_name);
SymExp MakePoint (ads_point);
SymExp MakeReal (ads_real);
SymExp MakeString (StrExp);
SymExp MakeSymbol (StrExp);
SymExp rb2Sym (struct resbuf **);
ads_real GetReal (SymExp);
int HIndex (HashTable [], StrExp);
int InsGlobal (HashTable [], StrExp, SymExp);
int InsLocal (HashTable [], StrExp, SymExp);
int returnADS (SymExp);
long GetNumber (SymExp);
void DelLocal (HashTable [], int);
void GetEName (SymExp, ads_name);
void GetMatrix (SymExp, ads_matrix);
void GetPickSet (SymExp, ads_name);
void GetPoint (SymExp, ads_point);
void InsTmpLocal (HashTable [], int);
void InsertStack (SymExp S[], int);
void KillMem (void);
void Lisp2C_Exit ();
void Lisp2C_Init (int, char *[]);
void MarkGlobal (HashTable [], int);
void PopObjList (void);
void PrintTable (HashTable []);
void PushObjList (void);
void PutLocal (HashTable [], int, SymExp);
void PutSymbol (HashTable [], StrExp, SymExp);
void RemoveStack ();
void WriteError (StrExp);
void check_resbuf (struct resbuf **);
void BREAKPT (int, int);
void debugENTER (StrExp);
void debugEXIT ();
void debugRESULT (SymExp);
//
// Error messages -----------------------------------------------------------
//
#define errBadArgType "Bad argument value."
#define errBadComment "Bad inline comment."
#define errBadDotPair "Bad dotted pair."
#define errBadMemory "Bad memory type."
#define errHashFull "Hash table full."
#define errIlegalValue "Ilegal value."
#define errIncorrArgs "Incorrect number of arguments to a function."
#define errLoadFailed "Load failed."
#define errNilFunction "NIL function."
#define errNoMemory "Cannot allocate memory."
#define errNotSymbol "Not a symbol."
#define errParentheses "Unbalanced parentheses in read."
#define errQuitExit "Quit/Exit abort."
#define errTooManyArgs "Eval can only handle < 32 args in user functions."
#define errUserBreak "User break."
#define errXload "Xload failed."
#define errXunload "Xunload failed."
#define warnBadValue "Cannot access symbol."
//
//
//░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
//░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
//░░▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░
//░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░
//░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░